//package com.white.commonlib.widget;
//
//import android.content.Context;
//import android.content.res.TypedArray;
//import android.graphics.Color;
//import android.os.Parcel;
//import android.os.Parcelable;
//import android.support.annotation.ColorInt;
//import android.support.v4.view.ViewCompat;
//import android.util.AttributeSet;
//import android.view.View;
//import android.view.ViewGroup;
//import android.view.ViewTreeObserver;
//import android.view.animation.AccelerateDecelerateInterpolator;
//import android.view.animation.Interpolator;
//import android.widget.LinearLayout;
//
//import com.white.commonlib.R;
//
///***
// * 底部菜单
// */
//public class BottomBar extends LinearLayout
//{
//    private static final int TRANSLATE_DURATION_MILLIS = 200;
//
//    private final Interpolator mInterpolator = new AccelerateDecelerateInterpolator();
//    private boolean mVisible = true;
//
//    private LinearLayout mTabLayout;
//
//    private LayoutParams mTabParams;
//    private int mCurrentPosition = 0;
//    private OnTabSelectedListener mListener;
//
//    private int tabCount;
//    private int[] tabDrawables;
//    private String[] tabTxt;
//    private @ColorInt
//    int tabBackground;
//
//    private @ColorInt
//    int dividerColor;
//    private int borderHeight;
//    private int paddingTopBottom;
//
//
//
//    public BottomBar(Context context)
//    {
//        this(context, null);
//    }
//
//    public BottomBar(Context context, AttributeSet attrs)
//    {
//        this(context, attrs, 0);
//    }
//
//    public BottomBar(Context context, AttributeSet attrs, int defStyleAttr)
//    {
//        super(context, attrs, defStyleAttr);
//        init(context, attrs);
//    }
//
//    private void init(Context context, AttributeSet attrs)
//    {
//        setOrientation(VERTICAL);
//
//        getAttrs(context, attrs);
//
//        createDivider(context);
//
//        createTabs(context, attrs);
//    }
//
//    private void createTabs(Context context, AttributeSet attrs)
//    {
//        mTabLayout = new LinearLayout(context);
//        mTabLayout.setOrientation(LinearLayout.HORIZONTAL);
//        addView(mTabLayout, new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
//        mTabLayout.setBackgroundColor(tabBackground);
//        mTabLayout.setPadding(0,paddingTopBottom,0,paddingTopBottom);
//
//        mTabParams = new LayoutParams(0, ViewGroup.LayoutParams.MATCH_PARENT);
//        mTabParams.weight = 1;
//
//        for (int i = 0; i < tabCount; i++)
//        {
//            BottomBarTab bbt = new BottomBarTab(context, attrs, 0, tabDrawables[i], tabTxt[i]);
//            bbt.setTabPosition(i);
//            addItem(bbt);
//        }
//    }
//
//    private void createDivider(Context context)
//    {
//        View v = new View(context);
//        LayoutParams p = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, borderHeight);
//        v.setBackgroundColor(dividerColor);
//        addView(v, p);
//    }
//
//    int drawablesIds[] = {
//            R.styleable.BottomBar_bb_drawable_1,
//            R.styleable.BottomBar_bb_drawable_2,
//            R.styleable.BottomBar_bb_drawable_3,
//            R.styleable.BottomBar_bb_drawable_4,
//            R.styleable.BottomBar_bb_drawable_5,
//            R.styleable.BottomBar_bb_drawable_6
//    };
//
//    int tabTxtIds[] = {
//            R.styleable.BottomBar_bb_txt_1,
//            R.styleable.BottomBar_bb_txt_2,
//            R.styleable.BottomBar_bb_txt_3,
//            R.styleable.BottomBar_bb_txt_4,
//            R.styleable.BottomBar_bb_txt_5,
//            R.styleable.BottomBar_bb_txt_6
//    };
//
//    public static final int ATTRS[] = {android.R.attr.background};
//
//    private void getAttrs(Context context, AttributeSet attrs)
//    {
//        TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.BottomBar);
//        tabCount = ta.getInt(R.styleable.BottomBar_bb_drawable_count, 0);
//        dividerColor = ta.getColor(R.styleable.BottomBar_bb_divider_color, Color.RED);
//        paddingTopBottom = ta.getDimensionPixelSize(R.styleable.BottomBar_bb_top_bottom_padding, 15);
//        borderHeight = ta.getDimensionPixelSize(R.styleable.BottomBar_bb_divider_height, 1);
//        if (tabCount > 0)
//        {
//            tabDrawables = new int[tabCount];
//            tabTxt = new String[tabCount];
//            for (int i = 0; i < tabCount; i++)
//            {
//                tabDrawables[i] = ta.getResourceId(drawablesIds[i], 0);
//                tabTxt[i] = ta.getString(tabTxtIds[i]);
//            }
//            TypedArray inner = context.obtainStyledAttributes(attrs, ATTRS);
//            tabBackground = inner.getColor(0, Color.WHITE);
//            inner.recycle();
//        }
//        ta.recycle();
//    }
//
//    private BottomBar addItem(final BottomBarTab tab)
//    {
//        tab.setOnClickListener(new OnClickListener()
//        {
//            @Override
//            public void onClick(View v)
//            {
//                if (mListener == null) return;
//
//                int pos = tab.getTabPosition();
//                if (mCurrentPosition == pos)
//                {
//                    mListener.onTabReselected(pos);
//                } else
//                {
//                    mListener.onTabSelected(pos, mCurrentPosition);
//                    tab.setSelected(true);
//                    mListener.onTabUnselected(mCurrentPosition);
//                    mTabLayout.getChildAt(mCurrentPosition).setSelected(false);
//                    mCurrentPosition = pos;
//                }
//            }
//        });
////        tab.setTabPosition(mTabLayout.getChildCount());
//        mTabLayout.addView(tab, mTabParams);
//        return this;
//    }
//
//    public void setOnTabSelectedListener(OnTabSelectedListener onTabSelectedListener)
//    {
//        mListener = onTabSelectedListener;
//    }
//
//    public void setCurrentItem(final int position)
//    {
//        mTabLayout.post(new Runnable()
//        {
//            @Override
//            public void run()
//            {
//                mTabLayout.getChildAt(position).performClick();
//            }
//        });
//    }
//
//    public interface OnTabSelectedListener
//    {
//        void onTabSelected(int position, int prePosition);
//
//        void onTabUnselected(int position);
//
//        void onTabReselected(int position);
//    }
//
//    @Override
//    protected Parcelable onSaveInstanceState()
//    {
//        Parcelable superState = super.onSaveInstanceState();
//        return new SavedState(superState, mCurrentPosition);
//    }
//
//    @Override
//    protected void onRestoreInstanceState(Parcelable state)
//    {
//        SavedState ss = (SavedState) state;
//        super.onRestoreInstanceState(ss.getSuperState());
//
//        if (mCurrentPosition != ss.position)
//        {
//            mTabLayout.getChildAt(mCurrentPosition).setSelected(false);
//            mTabLayout.getChildAt(ss.position).setSelected(true);
//        }
//        mCurrentPosition = ss.position;
//    }
//
//    public int getCurrentItemPosition()
//    {
//        return mCurrentPosition;
//    }
//
//    static class SavedState extends BaseSavedState
//    {
//        private int position;
//
//        public SavedState(Parcel source)
//        {
//            super(source);
//            position = source.readInt();
//        }
//
//        public SavedState(Parcelable superState, int position)
//        {
//            super(superState);
//            this.position = position;
//        }
//
//        @Override
//        public void writeToParcel(Parcel out, int flags)
//        {
//            super.writeToParcel(out, flags);
//            out.writeInt(position);
//        }
//
//        public static final Creator<SavedState> CREATOR = new Creator<SavedState>()
//        {
//            public SavedState createFromParcel(Parcel in)
//            {
//                return new SavedState(in);
//            }
//
//            public SavedState[] newArray(int size)
//            {
//                return new SavedState[size];
//            }
//        };
//    }
//
//
//    public void hide()
//    {
//        hide(true);
//    }
//
//    public void show()
//    {
//        show(true);
//    }
//
//    public void hide(boolean anim)
//    {
//        toggle(false, anim, false);
//    }
//
//    public void show(boolean anim)
//    {
//        toggle(true, anim, false);
//    }
//
//    public boolean isVisible()
//    {
//        return mVisible;
//    }
//
//    private void toggle(final boolean visible, final boolean animate, boolean force)
//    {
//        if (mVisible != visible || force)
//        {
//            mVisible = visible;
//            int height = getHeight();
//            if (height == 0 && !force)
//            {
//                ViewTreeObserver vto = getViewTreeObserver();
//                if (vto.isAlive())
//                {
//                    // view树完成测量并且分配空间而绘制过程还没有开始的时候播放动画。
//                    vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener()
//                    {
//                        @Override
//                        public boolean onPreDraw()
//                        {
//                            ViewTreeObserver currentVto = getViewTreeObserver();
//                            if (currentVto.isAlive())
//                            {
//                                currentVto.removeOnPreDrawListener(this);
//                            }
//                            toggle(visible, animate, true);
//                            return true;
//                        }
//                    });
//                    return;
//                }
//            }
//            int translationY = visible ? 0 : height;
//            if (animate)
//            {
//                animate().setInterpolator(mInterpolator)
//                        .setDuration(TRANSLATE_DURATION_MILLIS)
//                        .translationY(translationY);
//            } else
//            {
//                ViewCompat.setTranslationY(this, translationY);
//            }
//        }
//    }
//}
